/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pos.controller;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import pos.client.dac.dao.OperazioneFinanziariaDAO;
import pos.client.dac.dao.OperazioneFinanziariaDAOAsync;
import pos.client.dac.dcs.OperazioneFinanziariaDCS;
import pos.client.dac.dcs.OperazioneFinanziariaDCSAsync;
import pos.domain.*;
import pos.gui.Index;
import pos.gui.OperazioneFinanziariaView;
import pos.server.dac.exceptions.EccezioneCRUD;

/**
 *
 * @author Anna
 */
public class OperazioneFinanziariaController
{
    private static OperazioneFinanziariaDAOAsync ofService = (OperazioneFinanziariaDAOAsync) GWT.create(OperazioneFinanziariaDAO.class);
    private static OperazioneFinanziariaDCSAsync ofDCS = (OperazioneFinanziariaDCSAsync) GWT.create(OperazioneFinanziariaDCS.class);

    public static void aggiungi(OperazioneFinanziaria of) throws EccezioneCRUD, EccezionePrecondizioni, EccezioneCardMinMax
    {
        System.out.println("\n Sto in Aggiungi in Controller");
        final OperazioneFinanziaria op = of;
        ofService.inserisciDatisuDB(of, Index.getUtente(), new AsyncCallback<OperazioneFinanziaria>()
        {
            @Override
            public void onFailure(Throwable caught)
            {
                Window.alert("Errore nella memorizzazione dell'operazione finanziaria.");
            }

            @Override
            public void onSuccess(OperazioneFinanziaria result)
            {
                // Window.alert("sto in successsin Controller");
                OperazioneFinanziariaView.addToModel(op);
                OperazioneFinanziariaView.refresh();
            }
        });
    }

    public static void elimina(OperazioneFinanziaria op) throws EccezioneCRUD, EccezioneCardMinMax
    {
        AsyncCallback<Void> callback = new AsyncCallback<Void>()
        {
            @Override
            public void onFailure(Throwable caught)
            {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
            public void onSuccess(Void result)
            {
                OperazioneFinanziariaView.refresh();
            }
        };

        ofService.cancellaDatidaDB(op, callback);

    }

    public static void aggiornaModello()
    {

        try {
            //  final Collection<OperazioneFinanziaria> op_DB;
            ofDCS.findByUtente(Index.getUtente(), new AsyncCallback<Collection<OperazioneFinanziaria>>()
            {
                @Override
                public void onFailure(Throwable caught)
                {
                    throw new UnsupportedOperationException("Not supported yet.");
                }

                @Override
                public void onSuccess(Collection<OperazioneFinanziaria> result)
                {
                    final Collection<OperazioneFinanziaria> of_bd = result;
                    System.out.println(result);
                    OperazioneFinanziariaView.setModel(of_bd);

                }
            });
        } catch (EccezioneCRUD ex) {
            Logger.getLogger(OperazioneFinanziariaController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
